home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / cvs / sprite / RCS / cvs.man,v < prev    next >
Encoding:
Text File  |  1991-11-15  |  43.3 KB  |  1,613 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    jhh:1.2; strict;
  6. comment  @@;
  7.  
  8.  
  9. 1.2
  10. date     91.09.10.16.21.33;  author jhh;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     91.09.03.13.17.57;  author jhh;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @@
  22.  
  23.  
  24. 1.2
  25. log
  26. @now describes all the snazzy new features, such as info and -e.
  27. @
  28. text
  29. @.\"
  30. .\"    $Id: cvs.man,v 1.1 91/09/03 13:17:57 jhh Exp Locker: jhh $
  31. .\"
  32. .TH CVS L "20 July 1989"
  33. .\" Full space in nroff; half space in troff
  34. .de SP
  35. .if n .sp
  36. .if t .sp .5
  37. ..
  38. .SH "NAME"
  39. cvs \- Concurrent Versions System
  40. .SH "SYNOPSIS"
  41. .B cvs
  42. [
  43. .I cvs_options
  44. ]
  45. .I cvs_command
  46. [
  47. .I command_options
  48. ] [
  49. .I command_args
  50. ]
  51. .SH "DESCRIPTION"
  52. .IX "revision control system" "\fLcvs\fR"
  53. .IX  cvs  ""  "\fLcvs\fP \(em concurrent versions system"
  54. .IX  "concurrent versions system \(em \fLcvs\fP"
  55. .IX  "release control system"  "cvs command"  ""  "\fLcvs\fP \(em concurrent versions system"
  56. .IX  "source control system"  "cvs command"  ""  "\fLcvs\fP \(em concurrent versions system"
  57. .IX  revisions  "cvs command"  ""  "\fLcvs\fP \(em source control"
  58. .B cvs
  59. is a front end to the
  60. .BR rcs (l)
  61. revision control system which extends
  62. the notion of revision control from a collection of files in a single
  63. directory to a hierarchical collection of directories consisting of
  64. revision controlled files.
  65. These directories and files can be combined together to form a software
  66. release.
  67. .B cvs
  68. provides the functions necessary to manage these software releases and to
  69. control the concurrent editing of source files among multiple software
  70. developers.
  71. .LP
  72. The following list summarizes some of the strong points of
  73. .BR cvs :
  74. .TP
  75. \(bu
  76. Only a single copy of the master sources exist.
  77. This copy is called the source ``repository'' and, through administrative
  78. actions, contains all the information to extract previous software releases
  79. at any time based on either a symbolic revision tag, or a date in the past.
  80. .TP
  81. \(bu
  82. Individual software developers check out private copies of the sources into
  83. their personal work space.
  84. These private sources can be edited at any time and checked back into the
  85. source repository as a permanent change.
  86. .B cvs
  87. takes special care to ensure that a file is up-to-date with the current
  88. revision in the source repository before allowing it to be added as a
  89. permanent change.
  90. .TP
  91. \(bu
  92. There is a facility for software developers to bring their private copies
  93. of the sources up-to-date with the currently checked in revisions, while at
  94. the same time preserving any modifications that have been made to their
  95. private sources.
  96. This allows multiple developers to be concurrently working on the same
  97. source files without regard for what the other guy is doing.
  98. .SP
  99. Note that this is the biggest change from the way most other revision
  100. control systems, like
  101. .SM RCS
  102. or
  103. .SM SCCS
  104. work, which allow only one developer to ever be changing a file, since the
  105. file must be checked out as ``locked'' for the exclusive use of that person.
  106. .B cvs
  107. instead never applies an
  108. .SM RCS
  109. lock to a checked out file until the moment before it is to be checked back
  110. in as a permanent change.
  111. Concurrency checks are performed on the soon-to-be checked in file and the
  112. file must be up-to-date before it can be made permanent.
  113. In this way,
  114. .B cvs
  115. allows individuals the freedom to change any file at will, and provides the
  116. tools necessary to point out, if not resolve, any conflicts that may be
  117. generated by allowing this extra, and necessary, freedom.
  118. .TP
  119. \(bu
  120. .B cvs
  121. has direct support for tracking source releases from third-party vendors.
  122. The
  123. .BR checkin (l)
  124. program is used to initially setup the source repository.
  125. The branch support of
  126. .SM RCS
  127. is used to build the vendor release as a branch off the main (local)
  128. .SM RCS
  129. trunk.
  130. Once this is done, developers can check out files and make local changes to
  131. the vendor's source distribution.
  132. The act of checking in a local change to a vendor's source distribution
  133. moves the
  134. .SM RCS
  135. branch from tracking the third-party vendor's release to the main (local)
  136. RCS trunk so that
  137. the local version of the file is used forever more.
  138. .SP
  139. When a new version of the vendor's source distribution (or even a minor
  140. version consisting of a small subset of files) arrives, the
  141. .B checkin
  142. program is used again to add the new vendor release to the already existing
  143. source repository.
  144. For files that have not been changed locally, the new file from the
  145. vendor becomes the current revision.
  146. For files that have been modified locally,
  147. .B checkin
  148. warns that the file must be merged manually with the new vendor release.
  149. The
  150. .B join
  151. command of
  152. .B cvs
  153. is a useful tool that aids this manual merge process (see below).
  154. .TP
  155. \(bu
  156. A vendor release or a local release can be given a symbolic tag name that
  157. is stored directly in the
  158. .SM RCS
  159. files.
  160. This tag can be used at any time in the future to get an exact copy of any
  161. previous release.
  162. With equal ease, one can also extract an exact copy of the source files as
  163. of any arbitrary date in the past as well.
  164. .TP
  165. \(bu
  166. All changes that are made to the source repository are carefully logged in
  167. a file, notesfile, or news database, which can be used to produce release
  168. notices.
  169. .B cvs
  170. can be configured to send log updates through one or more filter programs,
  171. based on a regular expression match on the directory that is being changed.
  172. This allows multiple related or unrelated projects to exist within a single
  173. .B cvs
  174. source repository tree, with each different project sending their checkin
  175. reports to a unique log device for the project.
  176. .TP
  177. \(bu
  178. There is support for a simple, yet powerful, ``module'' database.
  179. This database can be used to apply names to collections of directories and
  180. files as a matter of convenience when checking out smaller pieces of a
  181. larger software distribution.
  182. This allows one to checkout the ``diff'' program, for example, without
  183. ever requiring the knowledge that the sources to ``diff'' actually reside
  184. in the ``bin/diff'' directory.
  185. .SP
  186. The module database also has limited support for an aliasing capability.
  187. This is useful for programs that share sources from completely disjoint
  188. directories.
  189. The aliasing feature can also be used to limit a named release to a certain
  190. collection of directories and files, to only work with pieces of the source
  191. found in the entire source repository.
  192. .TP
  193. \(bu
  194. There is direct support for determining which files have changed since a
  195. previous release, or from a particular date.
  196. As well,
  197. .B cvs
  198. can create a
  199. .BR patch (l)
  200. format output file which can be used to bring a previously released
  201. software distribution current with the newest release.
  202. One can create a patch file between two tagged revisions, between a
  203. revision and some date in the past, between two dates, or between a date or
  204. revision and the current ``head'' revision.
  205. .LP
  206. The remainder of this manual page will document how all these actions can
  207. be done using the
  208. .B cvs
  209. program.
  210. .SH "OPTIONS"
  211. .B cvs
  212. accepts a number of options that override the current setting of the
  213. recognized environment variables.
  214. .TP
  215. .B \-r
  216. Checks out files read-only.
  217. Same effect as if the
  218. .SM CVSREAD
  219. environment variable is set.
  220. .TP
  221. .B \-w
  222. Checks out files read-write (default).
  223. Overrides the setting of the
  224. .SM CVSREAD
  225. environment variable.
  226. .TP
  227. .B \-v
  228. Outputs version and copyright information for
  229. .BR cvs ,
  230. then exits.
  231. .TP
  232. \fB-d\fP \fICVS_root_directory\fP
  233. Use
  234. .I CVS_root_directory
  235. as the root directory pathname of the master
  236. .SM RCS
  237. source repository.
  238. Overrides the setting of the
  239. .SM CVSROOT
  240. environment variable.
  241. .TP
  242. \fB-b\fP \fIbindir\fP
  243. Use
  244. .I bindir
  245. as the directory to find
  246. .SM RCS
  247. programs within.
  248. Overrides the setting of the
  249. .SM RCSBIN
  250. environment variable.
  251. .TP
  252. \fB-e\fP \fIeditor\fP
  253. Use
  254. .I editor
  255. for editing revision log information.
  256. Overrides the setting of the
  257. .SM EDITOR
  258. environment variable.
  259. .TP
  260. .B \-H
  261. Displays usage information about the specified
  262. .I cvs_command
  263. without actually executing said command.
  264. .SH "USAGE"
  265. A
  266. .I cvs_command
  267. must be specified to
  268. .B cvs
  269. which drives the specific release control function that is performed.
  270. Each
  271. .B cvs
  272. command accepts options and arguments unique to the command.
  273. The usage statements for each command can be displayed by specifying the
  274. .B \-H
  275. option to the command.
  276. .LP
  277. The available commands are listed below along with a description of their
  278. function.
  279. Command options unique to the command are described in this section with
  280. the command description.
  281. Common command options are described fully in the following section.
  282. .TP
  283. \fBcheckout\fP [\fB-Qqlfnp\fP] [\fB-e \fIdir\fP] [\fB-c\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fImodules\fP...
  284. Checks out the source files defined by
  285. .IR modules .
  286. This command is used to get a private copy of the current sources that can
  287. be edited and processed by most of the other
  288. .B cvs
  289. commands.
  290. .B checkout
  291. must be done before many of the other
  292. .B cvs
  293. commands are used, since most of them operate on checked out sources.
  294. .SP
  295. Depending on the
  296. .I modules
  297. specified,
  298. .B checkout
  299. may recursively create directories and populate them with the appropriate
  300. source files.
  301. These source files can then be edited at any time (regardless of whether
  302. other software developers are editing their private copies of the sources),
  303. updated to include new changes checked into the source repository, or
  304. committed as a permanent change to the
  305. .SM RCS
  306. repository.
  307. .SP
  308. Note that
  309. .B checkout
  310. is used to create directories.
  311. The top-level directory created is always added to the working directory
  312. where
  313. .B checkout
  314. is invoked, and usually has the same name as the specified
  315. .IR module .
  316. In the case of a
  317. .I module
  318. alias, the created sub-directory may have a different name, but you can be
  319. sure that it will be a sub-directory, and that
  320. .B checkout
  321. will show the relative path leading to each file as it is extracted into
  322. your private work area, unless the
  323. .B \-Q
  324. option is specified.
  325. .SP
  326. Running
  327. .B checkout
  328. on a directory that was already built by
  329. .B checkout
  330. is also OK.
  331. This has the same effect as specifying the
  332. .B \-d
  333. option to the
  334. .B update
  335. command described below.
  336. .SP
  337. The
  338. .B \-c
  339. option ``cat''s the module file, sorted, to the standard output, and does
  340. not cause any files or directories to be checked out.
  341. .SP
  342. .B co
  343. can be specified instead of
  344. .B checkout
  345. to save some typing.
  346. See the
  347. .SM MODULES
  348. section below for a complete description of modules.
  349. .TP
  350. \fBupdate\fP [\fB-Qqlfp\fP] [\fB-e \fIdir\fP] [\fB-d\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIfiles...\fP
  351. After
  352. .B checkout
  353. is run, directories and files have been extracted from the source
  354. repository for your personal editing.
  355. At any time that is convenient in your development process, the
  356. .B update
  357. command can be run
  358. .I "from within the directory that contains the checked out sources"
  359. to bring those sources current with any revisions that have been checked
  360. into the source repository since they were last checked out or
  361. .BR update d.
  362. .SP
  363. Normally,
  364. .B update
  365. brings the current directory up-to-date, then descends any sub-directories,
  366. bringing them up-to-date as well.
  367. This can be overridden by specifying a list of files that should only be
  368. updated, or by using the
  369. .B \-l
  370. option which causes
  371. .B update
  372. to only process the current directory, ignoring any sub-directories.
  373. .SP
  374. If any special options were initially specified to
  375. .B checkout
  376. when the source were initially checked out, these exact options should be
  377. specified to
  378. .B update
  379. as well to keep the sources consistent with the way they were originally
  380. checked out.
  381. For example, checking out sources by specifying the ``\fB-r V1_0\fP''
  382. option will check out the revisions associated with the
  383. .B V1_0
  384. release tag.
  385. A subsequent
  386. .B update
  387. that does \fInot\fP specify this exact
  388. .B \-r
  389. option as well will revert to updating the sources with the current
  390. revisions as stored in the source repository, rather than those revisions
  391. associated with the
  392. .B V1_0
  393. release.
  394. .SP
  395. If the 
  396. .B \-d
  397. option is specified then 
  398. .B update
  399. will update your source tree with any new directories that have been
  400. added to the repository.
  401. .SP
  402. For a complete description of the algorithm that
  403. .B update
  404. uses to bring your source up-to-date, refer to the
  405. .SM "\fBCONFLICT RESOLUTION\fP"
  406. section below.
  407. .TP
  408. \fBcommit\fP [\fB-Qqfn\fP] [-a] [\fB-m\fP '\fIlog_message\fP'] [\fB-r\fP \fIrevision\fP] [\fIfiles...\fP]
  409. At any point, changes that you have made to your private copies of the
  410. sources may be
  411. .BR commit ted
  412. to the source repository as a permanent change.
  413. .B commit
  414. does not do a recursive
  415. .BR commit ,
  416. so each individual directory must be checked in separately, even if the
  417. changes were related.
  418. .SP
  419. .B commit
  420. verifies that the selected files are up-to-date with the current revisions
  421. in the source repository and will abort without committing if any of the
  422. specified files must be made current first with the
  423. .B update
  424. command.
  425. With the
  426. .B \-a
  427. option, all relevant files of the current directory are examined.
  428. .B commit
  429. is careful to only check in those files that have really changed.
  430. Note that
  431. .B commit
  432. does not
  433. .B update
  434. the out-of-date files for you, but rather leaves that for you to do when
  435. the time is right.
  436. .SP
  437. An
  438. .SM RCS
  439. identification string ($\&Id\&) must exist in the modified files that are
  440. to be checked in.
  441. If the identification string cannot be found in any of the files,
  442. .B commit
  443. will prompt you for verification before proceeding.
  444. This prompt is bypassed if the
  445. .B \-f
  446. option has been specified.
  447. .SP
  448. When all is well, an editor is invoked for the purpose of entering a log
  449. message that will be written to one or more logging programs and placed in the
  450. .SM RCS
  451. source repository file.
  452. The log message may be specified on the command line with the
  453. .B \-m
  454. option, thus suppressing the editor invocation.
  455. .SP
  456. .B ci
  457. can be specified instead of
  458. .B commit
  459. to save some typing.
  460. .TP
  461. \fBdiff\fP [\fIrcsdiff_options\fP] [\fIfiles...\fP]
  462. Your checked out files can be diffed against the original revisions they
  463. were based upon with the
  464. .B diff
  465. command.
  466. See
  467. .BR rcsdiff (l)
  468. for a list of accepted options.
  469. If no files are specified,
  470. .B diff
  471. will only ``diff'' those files in the current directory that
  472. are different than the checked out revision (i.e. ones that
  473. .I you
  474. have changed), or that are different than a specified revision.
  475. If files are specified, only those files are diffed.
  476. .SP
  477. Two revisions may be specified as well.
  478. In which case your private sources are not diffed at all.
  479. Instead, the two revisions specified are diffed.
  480. .TP
  481. \fBlog\fP [\fIrlog_options\fP] [\fIfiles...\fP]
  482. To display revision log information equivalent to the
  483. .BR rlog (l)
  484. program, the
  485. .B log
  486. command is used.
  487. See
  488. .BR rlog (l)
  489. for a list of accepted options.
  490. If no files are specified,
  491. .B log
  492. will run an
  493. .B rlog
  494. (with the arguments asa specified)
  495. on every file under
  496. .B cvs
  497. control in the current directory.
  498. If files are specified, the log information of only those files is displayed.
  499. .TP
  500. \fBstatus\fP [\fIfiles...\fP]
  501. Displays three lines of information for each of its argument files, one for
  502. the user file (line 1), one for the newest
  503. .SM RCS
  504. file showing the current ``head'' revision number (line 3),
  505. and one for the
  506. .SM RCS
  507. file both derive from showing the date it was last updated (line 2).
  508. .TP
  509. \fBadd\fP [\fB-m\fP '\fImessage\fP'] \fIfiles...\fP
  510. To permanently create a new file or directory in the
  511. .SM RCS
  512. source repository, the
  513. .B add
  514. command is used.
  515. The files or directories specified to
  516. .B add
  517. must already exist in the current directory (which must have been created
  518. with the
  519. .B checkout
  520. command).
  521. For adding a whole new directory hierarchy to the source repository
  522. that was received from a third-party vendor, see the
  523. .BR checkin (l)
  524. program for how to do this.
  525. .SP
  526. If the argument refers to an immediate sub-directory, the directory is
  527. created at the correct place in the
  528. .SM RCS
  529. source repository and the necessary
  530. .B cvs
  531. administration files are created within the argument directory.
  532. It is not considered an error if the
  533. .SM RCS
  534. source repository directory already exists.
  535. Thus, to add a directory to your private sources that was created after you
  536. had done your
  537. .B checkout
  538. of the sources, you can do the following:
  539. .SP
  540. .in +1i
  541. .ft B
  542. .nf
  543. example% mkdir new_directory
  544. example% cvs add new_directory
  545. example% cvs update new_directory
  546. .fi
  547. .ft P
  548. .in -1i
  549. .SP
  550. For each added file, a description of the file's purpose is read from the
  551. terminal in
  552. .SM RCS
  553. fashion, unless the
  554. .B \-m
  555. option is specified, in which case the argument
  556. .I message
  557. is used instead.
  558. This description will become a permanent part of the created
  559. .SM RCS
  560. file.
  561. .SP
  562. The added files are not placed in the
  563. .SM RCS
  564. source repository until they are
  565. .BR commit ted
  566. as a permanent change.
  567. Doing an
  568. .B add
  569. on a file that has been removed with the
  570. .B remove
  571. command will resurrect the file, unless it has already been 
  572. .BR commit ted.
  573. .TP
  574. \fBremove\fP \fIfiles...\fP
  575. Marks the specified files as removed on purpose from the current directory
  576. in the source repository.
  577. The specified files must no longer exist in the current directory when the
  578. .B remove
  579. command is issued.
  580. The files are not actually removed until they are
  581. .BR commit ted,
  582. at which point their respective
  583. .SM RCS
  584. files in the source depository are
  585. .I moved
  586. into the
  587. .I Attic
  588. directory within the source repository.
  589. To restore a committed removed file to the present version requires an
  590. administrator to physically
  591. .I move
  592. the
  593. .SM RCS
  594. file out of the
  595. .I Attic
  596. and back into its parent directory.
  597. .TP
  598. \fBjoin\fP [\fB-Qqf\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIfiles...\fP
  599. The intended purpose of the
  600. .B join
  601. command is to perform the logical merge of a new vendor release installed
  602. with the
  603. .BR checkin (l)
  604. command with locally modified files from a previous vendor release.
  605. The
  606. .B checkin
  607. program will inform you that a vendor file has been locally modified and it
  608. is up to
  609. .I you
  610. to resolve the two branches of development (local and vendor) into a
  611. unified revision that will be
  612. .BR commit ted
  613. as a permanent change to the source repository on the main (local) trunk.
  614. The
  615. .B join
  616. command will usually be used with the
  617. .B \-r
  618. option to specify the vendor tag that is to be merged with the local
  619. changes.
  620. This merge is handled by
  621. .SM RCS
  622. and the resultant file is placed in the current directory (within your
  623. private work space) and any conflicts during the merge are displayed.
  624. .SP
  625. After correcting any conflicts during the merge,
  626. .B commit
  627. the joined file as usual with a modified file, and the result (with a bit
  628. of work, perhaps) should be a working combination of the local changes and
  629. the vendor changes.
  630. .TP
  631. \fBinfo\fP [\fB-f\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIfiles...\fP
  632. The 
  633. .B info
  634. command gives a brief summary of the state of your checked out files.
  635. Its output is similar to that of the 
  636. .B update
  637. command.
  638. See the 
  639. .SM "\fBCONFLICT RESOLUTION\fP"
  640. section for details.
  641. If no arguments are given 
  642. .B info
  643. will print the state of all files in the current directory, otherwise it
  644. will print the state of the specified files.
  645. .B Info 
  646. is not recursive. 
  647. There is a small difference in the meaning of the \fBC\fP
  648. notation between the 
  649. .B info
  650. and 
  651. .B update
  652. commands.
  653. .B Info
  654. will print a \fBC\fP in front of any file that has been modified both
  655. locally and in the repository. 
  656. .B Update
  657. will only print a \fBC\fP if a merge of the two versions produces a
  658. conflict.
  659. .LP
  660. The following commands do their work entirely within the
  661. .SM RCS
  662. source repository and, as such, do not require that a
  663. .B checkout
  664. be done first.
  665. These commands are usually of interest only to the person responsible for
  666. the release procedures of a software package.
  667. See the
  668. .SM "\fBMODULE SUPPORT\fP"
  669. section below for a full description of what a
  670. .I module
  671. is.
  672. .TP
  673. \fBpatch\fP [\fB-Qqlf\fP] [\fB-s\fP|\fB-t\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP]] \fImodules...\fP
  674. Builds a Larry Wall format
  675. .BR patch (l)
  676. file between two releases that can be fed directly into the
  677. .B patch
  678. program to bring an old release up-to-date with the new release.
  679. The diff output is sent to the standard output device.
  680. Note that any combination of one or two revisions or dates may be specified.
  681. If only one revision or date is specified, the
  682. .B patch
  683. is made between that revision or date and the current ``head'' revisions in
  684. the
  685. .SM RCS
  686. file.
  687. .SP
  688. Note that if the software release that is being
  689. .BR patch ed
  690. is contained in more than one directory, then it may be necessary to
  691. specify the
  692. .B \-p
  693. option to the
  694. .BR patch (l)
  695. command when patching the old sources, so that
  696. .BR patch (l)
  697. is able to find the files that are located in other directories.
  698. .SP
  699. If the
  700. .B \-s
  701. option is specified, a patch file is not produced.
  702. Instead, a description of the changed or added files between the two
  703. releases is sent to the standard output device.
  704. This is useful for finding out, for example, which files have changed
  705. between two dates or revisions.
  706. .SP
  707. If the
  708. .B \-t
  709. option is specified, a diff of the top two revisions is sent to the
  710. standard output device.
  711. This is most useful for seeing what the last change to a file was.
  712. .TP
  713. \fBtag\fP [\fB-Qqlfn\fP] [\fB-d\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIsymbolic_tag\fP \fImodules...\fP
  714. Sources in the repository can have a symbolic tag associated with them.
  715. This allows one to ``snapshot'' the current sources when the software
  716. freeze date of a project arrives, and as bugs are fixed after the freeze
  717. date, only those changed sources that are to be part of the release need be
  718. re-tagged.
  719. .SP
  720. The symbolic tags are meant to permanently record which revisions of which
  721. files were used in creating a software distribution.
  722. The functionality provided with the
  723. .B checkout
  724. and
  725. .B update
  726. commands allow one to extract an exact copy of this release at any time in
  727. the future, regardless of whether files have been
  728. .BR add ed
  729. or
  730. .BR remove d
  731. since the release was
  732. .BR tag ged.
  733. So in general, these symbolic names of software distributions should not be
  734. removed, but the
  735. .B \-d
  736. option is provided as a means to remove completely obsolete symbolic names
  737. if necessary (as might be the case for an Alpha release, say).
  738. It is also possible to only tag files that already contain a certain tag.
  739. This method would be used to rename a tag \(em tag only the files with the
  740. old tag, then delete the old tag leaving the new tag which would tag the
  741. exact same files as the old tag.
  742. .SH "COMMAND OPTIONS"
  743. The following options are common to more than one of the
  744. .B cvs
  745. commands, and are explained in detail here once, for brevity.
  746. .TP
  747. .B \-Q
  748. Causes the command to be
  749. .I really
  750. quiet.
  751. .TP
  752. .B \-q
  753. Causes the command to be somewhat quiet.
  754. .TP
  755. .B \-l
  756. Causes the command to not be recursive.
  757. Only the specified directory will be processed.
  758. .TP
  759. .B \-f
  760. Forces the specified tag to match.
  761. Normally, when a tag is specified with the
  762. .B \-r
  763. option and the
  764. .SM RCS
  765. file does not contain the tag, the ``head'' revision for the
  766. .SM RCS
  767. file is returned.
  768. When the
  769. .B \-f
  770. option is specified, any
  771. .SM RCS
  772. file that does not contain the specified tag is ignored.
  773. This is useful for extracting an exact copy of a previously tagged release.
  774. .TP
  775. .B \-n
  776. Causes the command
  777. .I not
  778. to run any
  779. .BR checkout / commit / tag
  780. program as specified in the modules database.
  781. .TP
  782. .B \-p
  783. On
  784. .BR checkout " or " update ,
  785. prune directories that are empty after being updated.
  786. This is useful for extracting an exact copy of a previously release,
  787. especially when combined with the
  788. .B \-f
  789. option.
  790. .TP
  791. \fB-e\fP \fIdir\fP
  792. On
  793. .BR checkout " or " update ,
  794. allows exceptions to directory pruning (\fB-p\fP option).
  795. If an empty directory has the same name as an argument to the \fB-e\fP
  796. option it is not pruned.
  797. .TP
  798. \fB-r\fP \fItag\fP
  799. Causes the command to use the revision specified by the
  800. .I tag
  801. argument instead of the usual ``head'' revision.
  802. The
  803. .I tag
  804. can be either a symbolic or numeric tag, in
  805. .SM RCS
  806. fashion,
  807. except in the case of the
  808. .B commit
  809. command, in which case the
  810. .I tag
  811. must be a numeric one.
  812. Specifying the
  813. .B \-q
  814. option along with the
  815. .B \-r
  816. option is often useful, to suppress the warning messages when the
  817. .SM RCS
  818. file does not contain the specified tag.
  819. .TP
  820. \fB-D\fP \fIdate_spec\fP
  821. Causes the command to use the revision that was checked in at or before the
  822. specified
  823. .I date_spec
  824. argument.
  825. The
  826. .I date_spec
  827. is a single argument, free form date description specifying a date in the
  828. past.
  829. This option implies the
  830. .B \-f
  831. option.
  832. See the
  833. .SM "\fBEXAMPLES\fP"
  834. section for useful examples of how the
  835. .B \-D
  836. option can be used.
  837. .SH "CONFLICT RESOLUTION"
  838. The algorithm used by
  839. .BR checkout " and " update
  840. is described in this section.
  841. The output generated, unless the
  842. .B \-Q
  843. option is specified, consists of the following lines to describe exactly
  844. how your private sources are being brought up-to-date with the
  845. .SM RCS
  846. source repository.
  847. .TP
  848. \fBU\fP \fIfile\fP
  849. The specified file was copied directly out of its respective
  850. .SM RCS
  851. file from the source repository.
  852. This is done because the condition of your user file matches one of the
  853. following:
  854. .in 1.5i
  855. .ti -.5i
  856. \(bu    The user file did not exist in your private sources, whether it was
  857. because you removed it, or because someone added it to the source repository.
  858. .ti -.5i
  859. \(bu    The file did exist, but you did not change it and a different
  860. revision was matched in the
  861. .SM RCS
  862. file, be it by the default ``head'' match, or via the
  863. .B \-r
  864. or
  865. .B \-D
  866. options.
  867. .TP
  868. \fBM\fP \fIfile\fP
  869. The specified file has been modified locally by you.
  870. Use the
  871. .B diff
  872. command to see the actual changes that you have made.
  873. .TP
  874. \fBA\fP \fIfile\fP
  875. The specified file has been added to your private copy of the sources, and
  876. will be added to the
  877. .SM RCS
  878. source repository when the file is
  879. .BR commit ted.
  880. This is a reminder to you that the file needs to be committed.
  881. .TP
  882. \fBR\fP \fIfile\fP
  883. The specified file has been removed from your private copy of the sources, and
  884. will be removed from the
  885. .SM RCS
  886. source repository when the file is
  887. .BR commit ted.
  888. This is a reminder to you that the file needs to be committed.
  889. .TP
  890. \fBC\fP \fIfiles\fP
  891. The specified file was modified locally by you, and while doing the
  892. .BR update ,
  893. it was determined that a later revision had been checked into the respective
  894. .SM RCS
  895. file.
  896. As a result,
  897. .B cvs
  898. performs an
  899. .BR rcsmerge (l),
  900. which combines the changes made to the
  901. .SM RCS
  902. file with the changes that you have made to your version of the file.
  903. If there were any lines in conflict during the merge (i.e. the other
  904. developer changed the same line that you have changed), then the
  905. .B C
  906. is displayed to show that the file must be manually corrected.
  907. .SP
  908. This merge process delimits the lines in conflict using lines beginning with
  909. ``>>>>>>>'' and ``<<<<<<<'', so it is easy to find the conflicts within
  910. your merged file.
  911. Note that your original, modified file is preserved in a backup file within
  912. the same directory that the file existed.
  913. The backup file has the form ``\fB.#\fP\fIfile\fP\fB.\fP\fIversion\fP'',
  914. where the
  915. .I version
  916. is the
  917. .SM RCS
  918. revision that your modified file was based upon.
  919. Note that some systems automatically purge files that begin with
  920. .B .#
  921. if they have not been accessed in roughly three days.
  922. Thus, if you intend to keep a copy of your original file, I strongly
  923. suggest that it be renamed.
  924. .SP
  925. If the merge process proceeded without any conflicts, an
  926. .B M
  927. is displayed instead of a
  928. .BR C .
  929. It is still a wise idea to
  930. .BR diff (1)
  931. the original version before the merge, contained in the backup file, with
  932. the merged version to verify that the merged changes make sense with your
  933. changes.
  934. .SH "MODULE SUPPORT"
  935. The
  936. .BR checkout ", " patch ", and " tag
  937. commands all accept
  938. .I module
  939. names as arguments.
  940. The module database is stored as an
  941. .BR ndbm (3)
  942. format database within the
  943. .SM CVSROOT.adm
  944. directory of your
  945. .SM CVSROOT
  946. source repository.
  947. The remainder of this section considers how the
  948. .B checkout
  949. command operates on the modules database.
  950. The operations for the other commands that use the database are similar,
  951. except that they do not create any files or directories in your work space, as
  952. .B checkout
  953. does.
  954. .LP
  955. The above commands search the module database for each module argument.
  956. If the module database does not exist, or if the argument does not have a
  957. matching key in the module database, the argument is processed as follows:
  958. .TP
  959. 1.
  960. The value of the
  961. .SM CVSROOT
  962. environment variable is prepended to the argument to form a full path name.
  963. .TP
  964. 2.
  965. If the full path name does not exist, either as a directory or as a file
  966. with an
  967. .SM RCS
  968. .B ,v
  969. extension, the argument module cannot be resolved and the command
  970. continues, processing any remaining argument modules.
  971. .TP
  972. 3.
  973. If the full path name refers to a directory, the directories leading up to
  974. the directory are created, starting from the current working directory, and
  975. the directory is populated with the correct files, ready for your editing
  976. satisfaction.
  977. If available, and the
  978. .B \-l
  979. option was not specified, sub-directories are created and populated as
  980. well, until the entire directory hierarchy of the specified module argument
  981. is reconstructed in your work space.
  982. .TP
  983. 4.
  984. If the full path name, combined with an
  985. .SM RCS
  986. .B ,v
  987. suffix exists, only that file is extracted.
  988. The directories leading up to where the argument module resides are
  989. created, if necessary, and the leaf directory is populated with the single
  990. source file.
  991. .LP
  992. It should be clear from reading the above algorithm that the module
  993. database is not required to extract or process whole directory hierarchies,
  994. or even individual files.
  995. However, the addition of the module database allows a high degree of
  996. flexibility to be added to the structure or naming of pieces of software
  997. within the
  998. .SM CVSROOT
  999. source hierarchy.
  1000. The easiest way to demonstrate the usefulness of the module database is by
  1001. example.
  1002. And so, one follows:
  1003. .LP
  1004. .RS
  1005. .ne 42
  1006. .nf
  1007. #
  1008. # Sample CVS Modules file
  1009. #
  1010. # Three different line formats are valid:
  1011. #    key     -a    aliases...
  1012. #    key [options] directory
  1013. #    key [options] directory files...
  1014. #
  1015. # Where "options" are composed of:
  1016. #    -i prog        Run "prog" on checkin of files
  1017. #    -o prog        Run "prog" on "checkout" of files
  1018. #    -t prog        Run "prog" on tagging of files
  1019. #
  1020.  
  1021. # Convenient aliases
  1022. world        -a .
  1023.  
  1024. # CVSROOT.adm support
  1025. CVSROOT    -i /usr/local/bin/mkmodules CVSROOT.adm
  1026. CVSROOT.adm    -i /usr/local/bin/mkmodules CVSROOT.adm
  1027. modules        -i /usr/local/bin/mkmodules CVSROOT.adm modules
  1028. loginfo        -i /usr/local/bin/mkmodules CVSROOT.adm loginfo
  1029.  
  1030. # The "sys" entry exists only to make symbolic links after checkout
  1031. sys        -o sys/tools/make_links sys
  1032.  
  1033. # Sub-directories of "bin"
  1034. awk        bin/awk
  1035. csh        bin/csh
  1036. diff        bin/diff
  1037. make        bin/make
  1038. sed        bin/sed
  1039. sh        bin/sh
  1040.  
  1041. # Programs that live in "bin"
  1042. cat        bin Makefile cat.c
  1043. chgrp        bin Makefile chgrp.c
  1044. chmod        bin Makefile chmod.c
  1045. cmp        bin Makefile cmp.c
  1046. cp        bin Makefile cp.c
  1047. date        bin Makefile date.c
  1048. dd        bin Makefile dd.c
  1049. .fi
  1050. .RE
  1051. .LP
  1052. The format of the
  1053. .I modules
  1054. file is also described in the above example.
  1055. The
  1056. .B \-a
  1057. option in the database indicates that the key is an alias, and that the
  1058. right-hand side of the alias is to be interpreted by the command
  1059. .I exactly
  1060. as if it had been specified as arguments on the command line for the command.
  1061. The
  1062. .B \-o
  1063. option indicates that the specified program is to be run on
  1064. .BR checkout .
  1065. The key for the entry is passed as the sole argument to the program.
  1066. The
  1067. .B \-i
  1068. option indicates that the specified program is to be run on
  1069. .BR commit .
  1070. The full pathname of the respective source repository directory
  1071. is passed as the sole argument to the program.
  1072. The
  1073. .B \-t
  1074. option indicates that the specified program is to be run on
  1075. .BR tag .
  1076. The key for the entry is passed as the sole argument to the program.
  1077. .LP
  1078. As an example, the command
  1079. .SP
  1080. .in +1i
  1081. .ft B
  1082. .nf
  1083. example% cvs checkout awk
  1084. .fi
  1085. .ft P
  1086. .in -1i
  1087. .SP
  1088. will create the ``awk'' directory in your current working directory, if
  1089. necessary, and populate it with the current revisions of the
  1090. files in the ``\c 
  1091. .SM $CVSROOT\c
  1092. /bin/awk'' directory.
  1093. The command
  1094. .SP
  1095. .in +1i
  1096. .ft B
  1097. .nf
  1098. example% cvs checkout date
  1099. .fi
  1100. .ft P
  1101. .in -1i
  1102. .SP
  1103. will create the ``date'' directory and populate with exactly the two files
  1104. ``Makefile'' and ``date.c'' from the ``\c
  1105. .SM $CVSROOT\c
  1106. /bin/awk'' directory.
  1107. .SH "VENDOR BRANCH SUPPORT"
  1108. The branch support of
  1109. .SM RCS
  1110. is used to provide a convenient method of tracking the changes
  1111. made to a vendor's source distribution.
  1112. When a source distribution is received from a vendor, the first step is to
  1113. run the
  1114. .BR checkin (l)
  1115. program to place the vendor's files under
  1116. .SM CVS
  1117. control.
  1118. .BR checkin (l)
  1119. arranges that the
  1120. .SM RCS
  1121. files produced from the vendor's source distribution are initially setup to
  1122. track the 1.1.1 branch of the
  1123. .SM RCS
  1124. file.
  1125. When a
  1126. .B commit
  1127. is done to one of these files, making permanent some local change, the
  1128. .SM RCS
  1129. file is changed to track the normal ``trunk'' branch, continuing the local
  1130. changes to the vendor's sources.
  1131. .LP
  1132. When a new version of the vendor's source distribution is received,
  1133. .B checkin
  1134. is used again to add the new files to
  1135. .SM CVS.
  1136. .B checkin
  1137. again adds the files to the (now already existing) 1.1.1 branch of the
  1138. .SM RCS
  1139. file.
  1140. This time, however,
  1141. .B checkin
  1142. issues a warning when a new version of a locally modified file is updated
  1143. by the vendor's source distribution.
  1144. It is your responsibility to then use the
  1145. .B join
  1146. command of
  1147. .B cvs
  1148. to merge the vendor's changes with your local changes.
  1149. See the description of the
  1150. .B join
  1151. command above.
  1152. .LP
  1153. The
  1154. .B \-r
  1155. and
  1156. .B \-D
  1157. options of the
  1158. .B checkout
  1159. and
  1160. .B update
  1161. commands work ``as expected'' with the vendor branch support.
  1162. In particular, the
  1163. .B \-D
  1164. option to check out based on a date in the past follows the current default
  1165. branch to find a match for the specified date.
  1166. If a match cannot be found on the default branch, the 1.1.1 vendor
  1167. branch is searched.
  1168. This allows checking out based on a date to work regardless of when
  1169. local changes are made to the file.
  1170. .SH "LOGGING SUPPORT"
  1171. When
  1172. .BR commit ting
  1173. a change to the source repository, a configurable logging support file,
  1174. .IR loginfo ,
  1175. is consulted in the $\c
  1176. .SM CVSROOT\c
  1177. /\c
  1178. .SM CVSROOT.adm
  1179. directory.
  1180. An example of the file is as follows:
  1181. .LP
  1182. .RS
  1183. .ne 22
  1184. .nf
  1185. # The "loginfo" file is used to control where "cvs commit"
  1186. # log information is sent.  The first entry on a line is a
  1187. # regular expression which is tested against the directory
  1188. # that the change is being made to, relative to the
  1189. # $CVSROOT.  If a match is found, then the remainder of the
  1190. # line is a filter program that should expect log information
  1191. # on its standard input.
  1192. # The filter program may use one and only one % modifier (ala
  1193. # printf).  If %s is specified in the filter program, a brief
  1194. # title is included (enclosed in single quotes) showing the
  1195. # modified file names.
  1196. # If the repository name does not match any of the regular
  1197. # expressions in this file, the "DEFAULT" line is used, if it
  1198. # is specified.
  1199. DEFAULT    /usr/local/bin/nfpipe -t %s utils.updates
  1200. ^diag        /usr/local/bin/nfpipe -t %s diag.updates
  1201. ^local        /usr/local/bin/nfpipe -t %s local.updates
  1202. ^perf        /usr/local/bin/nfpipe -t %s perf.updates
  1203. ^sys        /usr/local/bin/nfpipe -t %s kernel.updates
  1204. .fi
  1205. .RE
  1206. .LP
  1207. In addition, ``ALL'' can be specified as a special regular expression which
  1208. always matches, but does not change the behaviour of when the ``DEFAULT''
  1209. branch is taken.
  1210. All matches for the regular expression are executed.
  1211. This logging feature allows for multiple groups and logging programs to
  1212. share a single
  1213. .SM CVS
  1214. source repository.
  1215. .SH "EXAMPLES"
  1216. Using the example
  1217. .I modules
  1218. and
  1219. .I loginfo
  1220. files shown above, this section shows some sample commands and describes
  1221. their functions.
  1222. .SP
  1223. .in +1i
  1224. .ft B
  1225. .nf
  1226. example% cvs checkout csh
  1227. example% cd csh
  1228. example% make
  1229. .fi
  1230. .ft P
  1231. .in -1i
  1232. .SP
  1233. This command retrieves the current revision of the ``csh'' sources and
  1234. places them within the ``csh'' directory.
  1235. The ``make'' command within that directory will then build the ``csh''
  1236. executable.
  1237. .SP
  1238. .in +1i
  1239. .ft B
  1240. .nf
  1241. example% cvs checkout -rSunOS csh
  1242. example% cd csh
  1243. example% make
  1244. .fi
  1245. .ft P
  1246. .in -1i
  1247. .SP
  1248. These commands get the current SunOS revision of ``csh'' and builds the
  1249. executable.
  1250. .SP
  1251. .in +1i
  1252. .ft B
  1253. .nf
  1254. example% cvs checkout date
  1255. example% cd date
  1256. example% make date
  1257. .fi
  1258. .ft P
  1259. .in -1i
  1260. .SP
  1261. These commands checkout the current revision of the ``date'' command, along
  1262. with the Makefile that is required to build the ``date'' executable.
  1263. The ``make'' command includes the target ``date'', since this Makefile is
  1264. used to build much more than just ``date'' by default.
  1265. .SP
  1266. .in +1i
  1267. .ft B
  1268. .nf
  1269. example% cvs checkout -q sys
  1270. .fi
  1271. .ft P
  1272. .in -1i
  1273. .SP
  1274. Gets a copy of the current kernel sources, including the entire kernel
  1275. directory hierarchy.
  1276. The
  1277. .B \-q
  1278. option suppresses the message displayed as each directory is descended.
  1279. .SP
  1280. .in +1i
  1281. .ft B
  1282. .nf
  1283. example% cvs checkout -p -q -f -rSunOS sys
  1284. .fi
  1285. .ft P
  1286. .in -1i
  1287. .SP
  1288. Gets an
  1289. .I exact
  1290. copy of the current revision SunOS kernel sources.
  1291. The
  1292. .B \-f
  1293. option forces only files that have the ``SunOS'' tag to be retrieved, not
  1294. including files locally added to the kernel sources.
  1295. The
  1296. .B \-p
  1297. option prunes empty directories, thereby not including directories that
  1298. have been locally added to the kernel source hierarchy.
  1299. .SP
  1300. .in +1i
  1301. .ft B
  1302. .nf
  1303. example% cvs checkout -p -D 'August 10, 1989 14:40' sys
  1304. .fi
  1305. .ft P
  1306. .in -1i
  1307. .SP
  1308. The exact copy of the kernel sources as of the specified date and time is
  1309. retrieved.
  1310. The date is a free-form strings, as specified in
  1311. .BR rcs (l).
  1312. .SP
  1313. .in +1i
  1314. .ft B
  1315. .nf
  1316. example% cvs diff -c
  1317. example% cvs commit -a -m 'fixed NULL pointer dereference'
  1318. .fi
  1319. .ft P
  1320. .in -1i
  1321. .SP
  1322. The
  1323. .B diff
  1324. command displays a context diff of all the changes that you have made to
  1325. the sources within the current directory.
  1326. Only those files thaty you have changed are displayed.
  1327. The
  1328. .B commit
  1329. command makes these changes permanent within the source repository so that
  1330. others can benefit from your fix.
  1331. .SP
  1332. .in +1i
  1333. .ft B
  1334. .nf
  1335. example% cvs diff -c -rSunOS file.c
  1336. example% cvs diff -c -r1.9 -r1.11 file.c
  1337. example% cvs diff -c -r1.22 file.c
  1338. .fi
  1339. .ft P
  1340. .in -1i
  1341. .SP
  1342. Examples of how the
  1343. .B diff
  1344. command can be used.
  1345. The first example displays the differences between the SunOS version of the
  1346. file and your checked out version.
  1347. The second example shows the differences between two specific revisions of
  1348. the
  1349. .SM RCS
  1350. file.
  1351. The final example diffs the currently checked out file against a specific
  1352. revision of the
  1353. .SM RCS
  1354. file.
  1355. .SP
  1356. .in +1i
  1357. .ft B
  1358. .nf
  1359. example% cvs tag PrismaOS1_0 csh
  1360. example% cvs tag PrismaOS1_0 bin
  1361. example% cvs tag test_kernel sys
  1362. example% cvs tag -d test_kernel sys
  1363. example% cvs tag -q -f -rSunOS SUNOS .
  1364. example% cvs tag -D 'June 30, 1989' JUNE_KERNEL sys
  1365. .fi
  1366. .ft P
  1367. .in -1i
  1368. .SP
  1369.  
  1370. .SH "FILES"
  1371. .TP
  1372. CVS.adm
  1373. A directory created by the
  1374. .B checkout
  1375. command within each directory that contains checked out source files.
  1376. This directory holds all the
  1377. .B cvs
  1378. administration files for an individual's private copy of the sources.
  1379. In general, these files should not be edited by hand.
  1380. .B cvs
  1381. will do that for you.
  1382. Be sure to
  1383. .I never
  1384. remove this directory if you have source files that have been modified and
  1385. need to be committed in the directory that the
  1386. CVS.adm
  1387. directory administrates.
  1388. The files contained in this directory are described below.
  1389. .TP
  1390. CVS.adm/Entries
  1391. Contains the list of files that have been checked out in the current
  1392. directory along with the revision number that each checked out file is
  1393. up-to-date with and a timestamp that is used to quickly determine if a file
  1394. has been possibly modified or not.
  1395. .TP
  1396. CVS.adm/Entries.Backup
  1397. A backup of the previous
  1398. CVS.adm/Entries
  1399. file, just in case of catastrophe.
  1400. .TP
  1401. CVS.adm/Entries.Static
  1402. The existence of this file tells
  1403. .B cvs
  1404. to only use the files contained in the
  1405. CVS.adm/Entries
  1406. file when generating the list of source files for this directory.
  1407. This allows selected files from a directory in the source repository to be
  1408. checked out and manipulated without requiring that the entire source
  1409. directory be used.
  1410. .TP
  1411. CVS.adm/Mod
  1412. After doing an
  1413. .B update
  1414. command, this file reflects the current list of modified source files for
  1415. the directory.
  1416. .TP
  1417. CVS.adm/Repository
  1418. Holds the pathname to the respective directory in the source repository
  1419. that these files refer to.
  1420. This is usually a relative pathname, with the value of the
  1421. .SM CVSROOT
  1422. environment tacked on the front to produce a full pathname.
  1423. If the pathname in the
  1424. CVS.adm/Repository
  1425. file is already a full pathname, the
  1426. .SM CVSROOT
  1427. value is not tacked on.
  1428. .TP
  1429. CVS.adm/Checkin.prog
  1430. Contains one line which specifies the program that is to be run when any
  1431. files in the current directory are checked in to the source repository with the
  1432. .B commit
  1433. command.
  1434. The particular use of this is to rebuild the ``modules'' database after a
  1435. new revision is checked in \(em see
  1436. .BR mkmodules (l).
  1437. .LP
  1438. The following files or directories are created directly in the source
  1439. repository directories as needed.
  1440. .TP
  1441. CVSROOT.adm
  1442. A directory that should exist in the top-most directory as defined by the
  1443. .SM CVSROOT
  1444. environment variable.
  1445. This directory contains administrations files that define the global
  1446. actions for the entire source repository beginning at
  1447. .SM CVSROOT .
  1448. The files used directly by
  1449. .B cvs
  1450. in this directory are described below, though you are free to add others as
  1451. you see fit.
  1452. .TP
  1453. CVSROOT.adm/modules,v
  1454. The
  1455. .SM RCS
  1456. file which defines the
  1457. .I modules
  1458. supported within this source repository.
  1459. The format is as specified in the
  1460. .SM "\fBMODULE SUPPORT\fP"
  1461. section above for more information.
  1462. .TP
  1463. CVSROOT.adm/loginfo,v
  1464. The
  1465. .SM RCS
  1466. file that contains the descriptions of which programs to pipe log messages
  1467. into when
  1468. .BR commit ting
  1469. files.
  1470. See the
  1471. .SM "\fBLOGGING SUPPORT\fP"
  1472. section above for more information.
  1473. .TP
  1474. Attic
  1475. When
  1476. .SM RCS
  1477. files are removed with the
  1478. .B remove
  1479. command, the actual
  1480. .SM RCS
  1481. file is moved into the Attic directory where it will remain until someone
  1482. uses the
  1483. .B add
  1484. command to restore it as a needed source file.
  1485. .TP
  1486. #cvs.lock
  1487. A lock directory created by
  1488. .B cvs
  1489. when doing sensitive changes to the
  1490. .SM RCS
  1491. source repository.
  1492. .TP
  1493. #cvs.tfl.\fIpid\fP
  1494. A lock file created just to test the waters of the
  1495. .SM RCS
  1496. source repository directory before committing files.
  1497. .TP
  1498. #cvs.rfl.\fIpid\fP
  1499. A read lock created when doing the
  1500. .B update
  1501. command.
  1502. A
  1503. .B commit
  1504. done by some other user will wait until all readers have finished using the
  1505. directory before proceeding.
  1506. .TP
  1507. #cvs.wfl.\fIpid\fP
  1508. A write lock created by
  1509. .B commit
  1510. to cause any other
  1511. .BR update s
  1512. in the same source repository directory to block until the commit has
  1513. completed.
  1514. .SH "ENVIRONMENT VARIABLES"
  1515. .TP
  1516. .SM CVSROOT
  1517. Must be set for most commands.
  1518. Should contain the full pathname to the root of the
  1519. .B cvs
  1520. source repository, that is, where the
  1521. .SM RCS
  1522. files are kept.
  1523. .TP
  1524. .SM CVSREAD
  1525. If this is set,
  1526. .B checkout
  1527. and
  1528. .B update
  1529. will try hard to make your private checked out sources read-only.
  1530. When this is not set, the default behaviour is to make read-write files.
  1531. .TP
  1532. .SM RCSBIN
  1533. Specifies the full pathname where to find
  1534. .SM RCS
  1535. programs, such as
  1536. .BR co (l)
  1537. and
  1538. .BR ci (l).
  1539. If not set, the default is
  1540. .BR /usr/local/bin .
  1541. .TP
  1542. .SM EDITOR
  1543. Specifies the editor to use when doing a
  1544. .BR commit .
  1545. If not set, the default editor used is
  1546. .BR /usr/ucb/vi .
  1547. .SH "AUTHORS"
  1548. .TP
  1549. Dick Grune
  1550. Original author of the
  1551. .B cvs
  1552. shell script version posted to
  1553. .B comp.sources.unix
  1554. in the volume6 release of December, 1986.
  1555. Credited with much of the
  1556. .B cvs
  1557. conflict resolution algorithms.
  1558. .TP
  1559. Brian Berliner
  1560. Coder and designer of the
  1561. .B cvs
  1562. program itself in April, 1989, based on the original work done by Dick.
  1563. .TP
  1564. Jeff Polk
  1565. Helped Brian with the design of the
  1566. .B cvs
  1567. module and vendor branch support and author of the
  1568. .BR checkin (l)
  1569. shell script.
  1570. .SH "SEE ALSO"
  1571. .BR checkin (l),
  1572. .BR ci (l),
  1573. .BR co (l),
  1574. .BR diff (1),
  1575. .BR grep (1),
  1576. .BR mkmodules (l),
  1577. .BR ndbm (3),
  1578. .BR patch (l),
  1579. .BR rcs (l),
  1580. .BR rcsdiff (l),
  1581. .BR rcsmerge (l),
  1582. .BR rlog (l),
  1583. .BR rm (1),
  1584. .BR sort (1).
  1585. .SH "BUGS"
  1586. @
  1587.  
  1588.  
  1589. 1.1
  1590. log
  1591. @Initial revision
  1592. @
  1593. text
  1594. @d2 1
  1595. a2 1
  1596. .\"    $Id: cvs.man,v 1.5 89/11/20 00:11:16 berliner Exp $
  1597. d255 1
  1598. a255 1
  1599. \fBcheckout\fP [\fB-Qqlfnp\fP] [\fB-c\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fImodules\fP...
  1600. d322 1
  1601. a322 1
  1602. \fBupdate\fP [\fB-Qqlfp\fP] [\fB-d\fP] [\fB-r\fP \fItag\fP|\fB-D\fP \fIdate_spec\fP] \fIfiles...\fP
  1603. d367 7
  1604. d380 1
  1605. a380 1
  1606. \fBcommit\fP [\fB-fn\fP] [-a] [\fB-m\fP '\fIlog_message\fP'] [\fB-r\fP \fIrevision\fP] [\fIfiles...\fP]
  1607. d602 29
  1608. d762 7
  1609. @
  1610.